﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using produccion.clases;
using System.Data;
using System.IO;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para frmCamDesMP.xaml
    /// </summary>
    public partial class frmCamDesMP : Window
    {
        CLSENCPPRP EncPprp=new CLSENCPPRP();
        CLSDETPPRP DetPprp = new CLSDETPPRP();
        DataTable dt = new DataTable();

        String StrCodigoMaterialActual, StrCodigoMaterialNuevo, StrCodigoColorActual, StrCodigoColorNuevo, StrProveedor, StrNumeroDePedido, StrNumeroDePedidos;//FJRF - Variables que se usaran para pasar los datos del sp
        Boolean BooPrimeraVez = false;
        String StrCodigoPrimerColorReferencia;

        public frmCamDesMP()
        {
            InitializeComponent();
        }

        private void btnSalir_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(txtRefAct);
        }

        private void btnBuscarAct_Click(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol frm = new FRMBuscarCol();
            frm.EsReferencia = false;
            frm.RequiereColor = true;
            frm.ShowDialog();
            if (!String.IsNullOrEmpty(frm.Retorno))
            {
                txtRefAct.Text = frm.Retorno.Substring(0, 10);
                if (!txtRefAct.Text.Equals(""))
                {
                    txtNomAct.Text = EncPprp.NombreMP(txtRefAct.Text.ToString().Substring(0, 6), txtRefAct.Text.ToString().Substring(6, 4));
                    buscar();
                }
            }
        }

        private void btnBuscarNue_Click(object sender, RoutedEventArgs e)
        {
            FRMBuscarCol frm = new FRMBuscarCol();
            frm.EsReferencia = false;
            frm.RequiereColor = true;
            frm.ShowDialog();
            if (!String.IsNullOrEmpty(frm.Retorno))
            {
                txtRefNue.Text = frm.Retorno.Substring(0, 10);
                if (!txtRefNue.Text.Equals(""))
                {
                    txtNomNue.Text = EncPprp.NombreMP(txtRefNue.Text.ToString().Substring(0, 6), txtRefNue.Text.ToString().Substring(6, 4));
                }
            }
        }

        private void txtRefAct_TextChanged(object sender, TextChangedEventArgs e)
        {
            txtNomAct.Text = "";
        }

        private void txtRefNue_TextChanged(object sender, TextChangedEventArgs e)
        {
            txtNomNue.Text = "";
        }

        private void txtRefAct_LostFocus(object sender, RoutedEventArgs e)
        {
            buscar();
        }

        private void buscar()
        {
            try
            {
                if (!txtRefAct.Text.Equals("") && txtRefAct.Text.Length == 10)
                {
                    txtNomAct.Text = EncPprp.NombreMP(txtRefAct.Text.ToString().Substring(0, 6), txtRefAct.Text.ToString().Substring(6, 4));
                    DetPprp.CODMAT_DPP = txtRefAct.Text.ToString().Substring(0, 6);
                    StrCodigoMaterialActual = DetPprp.CODMAT_DPP;

                    DetPprp.CODCOL_DPP = txtRefAct.Text.ToString().Substring(6, 4);
                    StrCodigoColorActual = DetPprp.CODCOL_DPP;

                    dt = DetPprp.PedidosCambiarDescartar();
                    dt.Columns.Add(new DataColumn("OK", System.Type.GetType("System.Boolean")));
                    dt.Columns["OK"].DefaultValue = false;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dt.Rows[i]["OK"] = false;
                    }
                    dgPedidos.ItemsSource = dt.DefaultView;
                    dgPedidos.CanUserAddRows = false;
                    dgPedidos.CanUserDeleteRows = false;

                    PonerImagenActual(StrCodigoMaterialActual, StrCodigoColorActual, txtNomAct.Text);
                }
                if (txtNomAct.Text == "")
                {
                    dgPedidos.ItemsSource = null;
                    txtRefAct.Text = "";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtRefNue_LostFocus(object sender, RoutedEventArgs e)
        {
            if (txtRefNue.Text == txtRefAct.Text)
            {
                MessageBox.Show("Las materias primas no pueden ser iguales", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);
                txtRefNue.Text = "";
                return;
            }
            if (!txtRefNue.Text.Equals("") && txtRefNue.Text.Length == 10)
            {
                StrCodigoMaterialNuevo = txtRefNue.Text.ToString().Substring(0, 6);
                StrCodigoColorNuevo = txtRefNue.Text.ToString().Substring(6, 4);

                txtNomNue.Text = EncPprp.NombreMP(StrCodigoMaterialNuevo, StrCodigoColorNuevo);

                PonerImagenNueva(StrCodigoMaterialNuevo, StrCodigoColorNuevo, txtNomNue.Text);
            }
        }

        private void dgPedidos_GotFocus(object sender, RoutedEventArgs e)
        {
            int j = dgPedidos.CurrentCell.Column.DisplayIndex;
            if (j == 5)
            {
                dgPedidos.IsReadOnly = false;
            }
            else
            {
                dgPedidos.IsReadOnly = true;
            }
        }

        private void rbCambiar_Checked(object sender, RoutedEventArgs e)
        {
            if (this.IsLoaded == true)
            {
                txtRefAct.Text = "";
                txtNomAct.Text = "";

                txtRefNue.Text = "";
                txtNomNue.Text = "";

                LblTituloReferenciaNueva.Visibility = Visibility.Visible;
                LblTituloMaterialNuevo.Visibility = Visibility.Visible;

                txtRefNue.Visibility = Visibility.Visible;
                txtNomNue.Visibility = Visibility.Visible;

                btnBuscarNue.Visibility = Visibility.Visible;
                imgFotoNueva.Visibility = Visibility.Visible;

                txtRefAct.Focus();
            }
        }

        private void rbDescartar_Checked(object sender, RoutedEventArgs e)
        {
            txtRefNue.Text = "";
            txtNomNue.Text = "";

            LblTituloReferenciaNueva.Visibility = Visibility.Hidden;
            LblTituloMaterialNuevo.Visibility = Visibility.Hidden;

            txtRefNue.Visibility = Visibility.Hidden;
            txtNomNue.Visibility = Visibility.Hidden;

            btnBuscarNue.Visibility = Visibility.Hidden;
            imgFotoNueva.Visibility = Visibility.Hidden;

            txtRefAct.Focus();
        }

        private void btnNuevo_Click(object sender, RoutedEventArgs e)
        {
            txtRefAct.Text = "";
            txtRefNue.Text = "";
            txtNomAct.Text = "";
            txtNomNue.Text = "";
            dgPedidos.ItemsSource = null;
            dgPedidos.Items.Clear();
            dt.Clear();
            imgFotoActual.Source = null;
            imgFotoNueva.Source = null;

            txtRefAct.Focus();
        }
        protected void PttV_Limpiar()
        {
            StrCodigoMaterialActual = " ";//FJRF - Limpiamos la variable
            StrCodigoMaterialNuevo = " ";//FJRF - Limpiamos la variable
            StrCodigoColorActual = " ";//FJRF - Limpiamos la variable
            StrCodigoColorNuevo = " ";//FJRF - Limpiamos la variable

            StrProveedor = "";//FJRF - Limpiamos la variable
            StrNumeroDePedido = "";//FJRF - Limpiamos la variable
            StrNumeroDePedidos = "";//FJRF - Limpiamos la variable
        }
        private void btnGrabar_Click(object sender, RoutedEventArgs e)
        {
            PttV_Limpiar();

            if (txtRefAct.Text == txtRefNue.Text)
            {
                MessageBox.Show("Las materias primas no pueden ser iguales!", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (rbCambiar.IsChecked == true)
            {
                string UniComAct, UniComNue;
                DetPprp.CODMAT_DPP = txtRefAct.Text.Substring(0, 6);
                UniComAct = DetPprp.UniComMP();
                DetPprp.CODMAT_DPP = txtRefNue.Text.Substring(0, 6);
                UniComNue = DetPprp.UniComMP();
                if (UniComAct != UniComNue)
                {
                    MessageBox.Show("Las unidades de compra son diferentes!", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }
            BooPrimeraVez = false;
            if (rbCambiar.IsChecked==true)
            {
                if (!txtRefAct.Text.Equals("") && !txtRefNue.Text.Equals(""))
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (dt.Rows[i][5].Equals(true))
                        {
                            #region FJRF - EstosSonLosDatosParaElSp
                            if (BooPrimeraVez == false)
                            {
                                StrCodigoMaterialActual = txtRefAct.Text.Substring(0, 6); 
                                StrCodigoColorActual = txtRefAct.Text.Substring(6, 4);

                                StrCodigoMaterialNuevo = txtRefNue.Text.Substring(0, 6);
                                StrCodigoColorNuevo = txtRefNue.Text.Substring(6, 4);
                                
                                BooPrimeraVez = true;
                            }
                            StrProveedor = dt.Rows[i][1].ToString();//FJRF - Capturamos el codigo del proveedor
                            StrNumeroDePedido = dt.Rows[i][0].ToString();//FJRF - Capturamos el numero de pedido
                            StrNumeroDePedidos = StrNumeroDePedidos + StrProveedor + StrNumeroDePedido.PadLeft(4, '0') + "-";//FJRF - Armamos los pedidos
                            #endregion

                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    if (!txtRefAct.Text.Equals(""))
                    {
                        if (dt.Rows[i][5].Equals(true))
                        {
                            #region FJRF - EstosSonLosDatosParaElSp
                            if (BooPrimeraVez == false)
                            {
                                StrCodigoMaterialActual = txtRefAct.Text.Substring(0, 6);
                                StrCodigoColorActual = txtRefAct.Text.Substring(6, 4);

                                StrCodigoMaterialNuevo = " ";
                                StrCodigoColorNuevo = " ";

                                BooPrimeraVez = true;
                            }
                            StrProveedor = dt.Rows[i][1].ToString();//FJRF - Capturamos el codigo del proveedor
                            StrNumeroDePedido = dt.Rows[i][0].ToString();//FJRF - Capturamos el numero de pedido
                            StrNumeroDePedidos = StrNumeroDePedidos + StrProveedor + StrNumeroDePedido.PadLeft(4, '0') + "-";//FJRF - Armamos los pedidos
                            #endregion
                        }
                    }
                }
            }
            if (BooPrimeraVez == true)
            {
                EjecutarSp_CAMDESMAT(StrCodigoMaterialActual, StrCodigoColorActual, StrCodigoMaterialNuevo, StrCodigoColorNuevo, StrNumeroDePedidos);//FJRF - Procesamos los pedidos

                txtRefAct.Text = "";
                txtRefNue.Text = "";
                txtNomAct.Text = "";
                txtNomNue.Text = "";
                dgPedidos.ItemsSource = null;
                dgPedidos.Items.Clear();
                dt.Clear();
                imgFotoActual.Source = null;
                imgFotoNueva.Source = null;

                MessageBox.Show("Información guardada con exito", "PROCESO EXITOSO", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                MessageBox.Show("No hay datos para procesar", "PROCESO CANCELADO", MessageBoxButton.OK, MessageBoxImage.Error);
            }

        }
        private void EjecutarSp_CAMDESMAT(String StrCodigoMaterialActual, String StrCodigoColorActual, String StrCodigoMaterialNuevo, String StrCodigoColorNuevo, String StrPedidos)//FJRF - Este procedimiento ejecuta un sp
        {
            try
            {
                MDOgeneral.spComando.CommandText = "SP_CAMDESMAT";
                MDOgeneral.spComando.Connection = MDOgeneral.conexion;
                MDOgeneral.spComando.CommandType = CommandType.StoredProcedure;
                MDOgeneral.spComando.Parameters.Clear();

                //Input
                MDOgeneral.spComando.Parameters.Add("pva_codmatact", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = StrCodigoMaterialActual;
                MDOgeneral.spComando.Parameters.Add("pva_codcolact", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = StrCodigoColorActual;
                MDOgeneral.spComando.Parameters.Add("pva_codmatnue", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = StrCodigoMaterialNuevo;
                MDOgeneral.spComando.Parameters.Add("pva_codcolnue", Oracle.DataAccess.Client.OracleDbType.Varchar2, 40).Value = StrCodigoColorNuevo;
                MDOgeneral.spComando.Parameters.Add("pva_pedidos", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Value = StrPedidos;

                //Output salidas
                MDOgeneral.spComando.Parameters.Add("pva_result", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.Parameters.Add("pva_errusu", Oracle.DataAccess.Client.OracleDbType.Varchar2, 2000).Direction = ParameterDirection.Output;
                MDOgeneral.spComando.ExecuteNonQuery();
            }
            catch (Exception ex) { throw ex; }
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                //System.Windows.Forms.SendKeys.Send("{TAB}");
                KeyEventArgs e1 = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource,
                                 0, Key.Tab);
                e1.RoutedEvent = Keyboard.KeyDownEvent;
                InputManager.Current.ProcessInput(e1);
            }
            
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }

        private void border5_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }
        #region FJRF - PonerFoto

        private void PonerImagenActual(string strCodigoReferencia, string strCodigoColor, string strNombreReferencia)
        {
            if (String.IsNullOrEmpty(strCodigoColor))
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg");
                    b.EndInit();
                    imgFotoActual.Stretch = Stretch.Fill;
                    imgFotoActual.Source = b;
                    ImagenTooltipActual.Source = b;
                    txbNombreImagenActual.Text = strNombreReferencia;
                }
                else
                {
                    imgFotoActual.Source = null;
                }
            }
            else
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg");
                    b.EndInit();
                    imgFotoActual.Stretch = Stretch.Fill;
                    imgFotoActual.Source = b;
                    ImagenTooltipActual.Source = b;
                    txbNombreImagenActual.Text = strNombreReferencia;
                }
                else
                {
                    if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg"))
                    {
                        b.BeginInit();
                        b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg");
                        b.EndInit();
                        imgFotoActual.Stretch = Stretch.Fill;
                        imgFotoActual.Source = b;
                        ImagenTooltipActual.Source = b;
                        txbNombreImagenActual.Text = strNombreReferencia;
                    }
                    else
                    {
                        Boolean BooExiste = false;
                        //Foto para cualquier color-Consultar colores para referencia
                        clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = strCodigoReferencia };
                        DataTable val = mae.BuscarColor();

                        foreach (DataRow r in val.Rows)
                        {
                            if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                            {
                                string StrRuta = MDOgeneral.Fotos_BOSI + strCodigoReferencia + r["Codigo"].ToString() + ".jpg";
                                if (File.Exists(StrRuta))
                                {
                                    BitmapImage BitFoto = new BitmapImage();
                                    BitFoto.BeginInit();
                                    BitFoto.UriSource = new Uri(StrRuta);
                                    BitFoto.EndInit();
                                    imgFotoActual.Source = BitFoto;
                                    ImagenTooltipActual.Source = BitFoto;
                                    txbNombreImagenActual.Text = strNombreReferencia;

                                    BooExiste = true;

                                    break;//FJRF - Si la encontro nos salimos
                                }
                            }
                        }

                        if (BooExiste == false)
                        {
                            imgFotoActual.Source = null;
                        }
                    }
                }
            }
        }
        private void PonerImagenNueva(string strCodigoReferencia, string strCodigoColor, string strNombreReferencia)
        {
            if (String.IsNullOrEmpty(strCodigoColor))
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + ".jpg");
                    b.EndInit();
                    imgFotoNueva.Stretch = Stretch.Fill;
                    imgFotoNueva.Source = b;
                    ImagenTooltipNueva.Source = b;
                    txbNombreImagenNueva.Text = strNombreReferencia;
                }
                else
                {
                    imgFotoActual.Source = null;
                }
            }
            else
            {
                BitmapImage b = new BitmapImage();
                if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg"))
                {
                    b.BeginInit();
                    b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + strCodigoColor + ".jpg");
                    b.EndInit();
                    imgFotoNueva.Stretch = Stretch.Fill;
                    imgFotoNueva.Source = b;
                    ImagenTooltipNueva.Source = b;
                    txbNombreImagenNueva.Text = strNombreReferencia;
                }
                else
                {
                    if (File.Exists(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg"))
                    {
                        b.BeginInit();
                        b.UriSource = new Uri(MDOgeneral.Fotos_BOSI + strCodigoReferencia + StrCodigoPrimerColorReferencia + ".jpg");
                        b.EndInit();
                        imgFotoNueva.Stretch = Stretch.Fill;
                        imgFotoActual.Source = b;
                        ImagenTooltipNueva.Source = b;
                        txbNombreImagenNueva.Text = strNombreReferencia;
                    }
                    else
                    {
                        Boolean BooExiste = false;
                        //Foto para cualquier color-Consultar colores para referencia
                        clases.CLSMAEPRO mae = new clases.CLSMAEPRO { CODREF_PRO = strCodigoReferencia };
                        DataTable val = mae.BuscarColor();

                        foreach (DataRow r in val.Rows)
                        {
                            if (!String.IsNullOrEmpty(r["Codigo"].ToString()))
                            {
                                string StrRuta = MDOgeneral.Fotos_BOSI + strCodigoReferencia + r["Codigo"].ToString() + ".jpg";
                                if (File.Exists(StrRuta))
                                {
                                    BitmapImage BitFoto = new BitmapImage();
                                    BitFoto.BeginInit();
                                    BitFoto.UriSource = new Uri(StrRuta);
                                    BitFoto.EndInit();
                                    imgFotoNueva.Source = BitFoto;
                                    ImagenTooltipNueva.Source = BitFoto;
                                    txbNombreImagenNueva.Text = strNombreReferencia;

                                    BooExiste = true;

                                    break;//FJRF - Si la encontro nos salimos
                                }
                            }
                        }

                        if (BooExiste == false)
                        {
                            imgFotoNueva.Source = null;
                        }
                    }
                }
            }
        }

        #endregion

    }
}
